package com.xiaohan.usercenter.common;

import lombok.AllArgsConstructor;
import lombok.Data;

import java.io.Serializable;

/**
 * @program: backend
 * @description: 通用的接口返回值结果封装
 * @author: 韩小豪
 * @create: 2025-02-27 21:01
 **/

@Data
@AllArgsConstructor  //全参构造
public class BaseResponse<T> implements Serializable {

	private static final long serialVersionUID = -822621026678076802L;

	//使用该类时传入什么类型数据，则data就是什么类型。  如 BaseResponse<User> baseResponse= new BaseResponse<>;

	/**
	 * 使用该类时传入什么类型数据，则data就是什么类型。
	 * 如 BaseResponse<User> baseResponse= new BaseResponse<>;
	 * 则 baseResponse.data.getClassName = User;
	 */

	//响应状态码
	private int code;

	//返回的结果对象
	private T data;

	//结果信息
	private String msg;

	//结果描述
	private String description;

	public BaseResponse(int code, T data) {
		this(code, data, "", "");   //调用本类的全参构造
	}

	public BaseResponse(int code, T data, String msg) {
		this(code, data, msg, "");
	}

	/**
	 * 返回错误的具体信息，data数据体为空
	 *
	 * @param errorCode
	 */
	public BaseResponse(ErrorCode errorCode) {
		this(errorCode.getCode(), null, errorCode.getMsg(), errorCode.getDescription());
	}
}
